package com.scott.classicthreadmodal.demo2.storage;

import com.scott.classicthreadmodal.Product;

import java.util.List;

/**
 * 仓库的委派接口
 */
public interface IStorage {

    /**
     * 生产
     *
     * @param num          数量
     * @param producerName 消费者名称
     * @throws InterruptedException 异常
     */
    void produce(int num, String producerName) throws InterruptedException;

    /**
     * 消费
     *
     * @param num          数量
     * @param consumerName 消费者名称
     * @return T 产品
     * @throws InterruptedException 异常
     */
    List<Product> consume(int num, String consumerName) throws InterruptedException;

    /**
     * 获取库存
     * @return 库存
     */
    int  getStock();
}
